<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let arr = [1, 2, 3, 4, 5];

        // forEach，没有返回值
        arr.forEach((item) => console.log(item)); dash();

        // map，会根据回调函数里的return，去生成一个新的数组
        let arr2 = arr.map((item) => item + 5);
        console.log(arr, arr2);
        dash();

        // filter，根据回调函数里的return生成一个新的数组，你return的就是筛选条件
        let arr3 = arr.filter(item => item >= 3);
        console.log(arr, arr3);
        dash();

        // for of
        for (let val of arr) {
            console.log(val);
        } dash();

        // for in
        for (let index in arr) {
            console.log(arr[index]);
        }; dash();

        // reduce: 接受一个函数，作为一个累加器
        // 回调函数有两个参数，第一个计算之后返回的值或者初始值，第二个为当前元素
        // 说起来有点拗口，其实就是以下面这个为例，我们传入一个回调函数和一个初始值，累加来说，一般初始值都是0，所以reduce函数遍历到第一个值的时候执行回调函数，pre就是0，item就是遍历到的第一个值，所以回调函数里直接每次return pre+item;即可，这样第二次执行回调函数，pre就是上次的pre+item，然后再执行前面的操作。
        // 说的再直白一点，累加不就是从0开始，一个一个加上数组里的每一个值，最后得到一个总和么。这就是最简单的累加求和写法
        arr.reduce((pre,item) => {
            return pre+item;
        },0)

        function dash() {
            console.log('-----------------------');
        }
    </script>
</body>

</html>